//
// Created by HP on 2025/11/14.
//
////
//// Created by HP on 2025/11/10.
////
//
#ifndef FLIGHTSERVER_DATABASE_H
#define FLIGHTSERVER_DATABASE_H
#include <string>
#include <vector>
#include <map>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QtSql/QSqlRecord>

// 数据库连接工具类
class DBConnector {
private:
    QSqlDatabase db;  // Qt ODBC 连接
    std::string host_;
    std::string user_;
    std::string passwd_;
    std::string dbname_;
    unsigned int port_;

    static DBConnector* instance_;  // 单例模式实例
public:
    // 构造函数（初始化连接参数）
    DBConnector(std::string  host, std::string  user,
                std::string  passwd, std::string  dbname,
                unsigned int port = 3306);

    // 析构函数（关闭连接）
    ~DBConnector();

    // 连接数据库
    bool connect();

    // 执行SQL查询（返回结果集，适合SELECT）
    std::vector<std::map<std::string, std::string>> query(const std::string& sql);

    // 执行SQL命令（适合INSERT/UPDATE/DELETE，返回影响行数）
    int execute(const std::string& sql);

    // 获取最后一次错误信息
    std::string getError();

    static DBConnector* getInstance();
};

#endif //FLIGHTSERVER_DATABASE_H
